package InterfaceGraphique;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;

import javax.swing.*;

/**
 * classe codant le Menu de notre projet ou toutes les actions possibles seront montrÃ©es
 * @author bruno
 *
 */
public class Menu extends Fenetre{
	

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;


	/**
	 * bouton de crÃ©ation de graphe
	 * @see JButton
	 */
	private JButton button1 = new JButton("Créer un graphe");


	/**
	 * bouton de chargement de graphe
	 * @see JButton
	 */
	private JButton button2 = new JButton("Charger un graphe");
	
	/**
	 * bouton de sauvegarde de graphe
	 * @see JButton
	 */
	private JButton button3 = new JButton("Sauvegarder votre graphe");
	
	/**
	 * bouton d'ajout d'un user
	 * @see JButton
	 */
	private JButton button4 = new JButton("Ajouter un utilisateur");
	
	/**
	 * bouton d'ajout d'une page
	 * @see JButton
	 */
	private JButton button5 = new JButton("Ajouter une page");
	
	/**
	 * bouton d'ajout d'un arc
	 * @see JButton
	 */
	private JButton button6 = new JButton("Ajouter un arc");
	
	/**
	 * bouton d'ajout d'un admin
	 * @see JButton
	 */
	private JButton button7 = new JButton("Ajouter un administrateur");
	
	/**
	 * bouton de suppression d'un sommet
	 * @see JButton
	 */
	private JButton button8 = new JButton("Supprimer un sommet");
	
	/**
	 * bouton de suppression d'un arc
	 * @see JButton
	 */
	private JButton button11 = new JButton("Supprimer un arc");
	
	/**
	 * bouton de supression d'un admin
	 * @see JButton
	 */
	private JButton button12 = new JButton("Supprimer un admin");
	
	/**
	 * bouton de visualisation du graphe
	 * @see JButton
	 */
	private JButton button9 = new JButton("Voir votre graphe");
	
	/**
	 * bouton de fin de programme
	 * @see JButton
	 */
	private JButton button10 = new JButton("Quitter");
	
	/**
<<<<<<< .mine
	 * Texte informatif relatif Ã  la derniÃ¨re action effectuÃ©
=======
	 * bouton pour voir les infos d'un sommet
	 * @see JButton
	 */
	private JButton button13 = new JButton("Info Sommet");
	
	/**
	 * Texte informatif relatif à la dernière action effectué
>>>>>>> .r62
	 * @see JLabel
	 */
	protected JLabel load = new JLabel("Aucun graphe chargé");
	
	/**
	 * constructeur de la fenetre
	 */
	public Menu(){
		
		this.setTitle("Projet POO Semestre3");
		this.setSize(550, 550);
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		
		JPanel is_loaded = new JPanel();
		is_loaded.add(load);
		
		JPanel cell_for_text = new JPanel();
		cell_for_text.add(new JLabel("Choissisez ce que vous voulez faire"));
		
		JPanel main_container = new JPanel();
		main_container.setLayout(new GridBagLayout());
		
		JPanel filler = new JPanel();
		filler.setPreferredSize(new Dimension(300,50));
		
		//Objet permettant de positionner les Ã©lements
		GridBagConstraints gbc = new GridBagConstraints();
		
		//dÃ©finition des tailles des boutons
		button1.setPreferredSize(new Dimension(221,25));
		button2.setPreferredSize(new Dimension(221,25));
		button3.setPreferredSize(new Dimension(221,25));
		button4.setPreferredSize(new Dimension(221,25));
		button5.setPreferredSize(new Dimension(221,25));
		button6.setPreferredSize(new Dimension(221,25));
		button7.setPreferredSize(new Dimension(221,25));
		button8.setPreferredSize(new Dimension(221,25));
		button9.setPreferredSize(new Dimension(221,25));
		button10.setPreferredSize(new Dimension(221,25));
		button11.setPreferredSize(new Dimension(221,25));
		button12.setPreferredSize(new Dimension(221,25));
		button13.setPreferredSize(new Dimension(221,25));
		
		//Ajout de la fenetre en tant que listener de chaque bouton
		button1.addActionListener(this);
		button2.addActionListener(this);
		button3.addActionListener(this);
		button4.addActionListener(this);
		button5.addActionListener(this);
		button6.addActionListener(this);
		button7.addActionListener(this);
		button8.addActionListener(this);
		button9.addActionListener(this);
		button10.addActionListener(this);
		button11.addActionListener(this);
		button12.addActionListener(this);
		button13.addActionListener(this);
		
		//on prÃ©cise le placement du premier composant sur le container
		gbc.gridx = 0;
		gbc.gridy = 0;
		//on prÃ©cise la taille des composants par rapport Ã  la grille 
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.ipady = 10;
		gbc.anchor = GridBagConstraints.WEST;
		main_container.add(button1, gbc);
		
		//positionnement sur la deuxiÃ¨me ligne tjs au dÃ©but de la ligne gbx.gridx n'ayant pas
		//Ã©tÃ© redÃ©fini
		gbc.gridy = 1;
		main_container.add(button2, gbc);
		
		gbc.gridy = 2;
		main_container.add(button3, gbc);
		
		gbc.gridy = 3;
		main_container.add(button4, gbc);
		
		gbc.gridy = 4;
		main_container.add(button5, gbc);
		gbc.gridx=1;
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		main_container.add(cell_for_text, gbc);
		
		gbc.gridy = 5;
		gbc.gridx=0;
		main_container.add(button6, gbc);
		
		gbc.gridy = 6;
		main_container.add(button7, gbc);
		
		gbc.gridy = 7;
		main_container.add(button8, gbc);
		
		gbc.gridy = 8;
		main_container.add(button11, gbc);
		
		gbc.gridy = 9;
		main_container.add(button12, gbc);
		
		gbc.gridy = 10;
		main_container.add(button13, gbc);
		
		gbc.gridy = 11;
		main_container.add(button9, gbc);
		
		gbc.gridy = 12;
		main_container.add(button10, gbc);
		
		gbc.gridy = 13;
		main_container.add(is_loaded, gbc);

		this.setContentPane(main_container);
	}

	/**
	 * MÃ©thode qui dÃ©finit ce que le programme fera en fonction des boutons cliquÃ©s
	 * @param e l'action dont on peut rÃ©cupÃ©rer la source vie e.getSource()
	 */
	@Override
	public void actionPerformed(ActionEvent arg0) {
		Fenetre newWindow;
		if(arg0.getSource() == button1){
			newWindow = new FenetreCreation();
		}
		if(arg0.getSource() == button2){
			newWindow = new FenetreChargement();
		}
		if(arg0.getSource() == button3){
			if(Test.charge == true) newWindow = new FenetreSauvegarde();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button4){
			if(Test.charge == true) newWindow = new FenetreAjoutUser();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button5){
			if(Test.charge == true) newWindow = new FenetreAjoutPage();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button6){
			if(Test.charge == true) newWindow = new FenetreAjoutArc();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button7){
			if(Test.charge == true) newWindow = new FenetreAjoutAdmin();
			else{
				load.setForeground(Color.RED);
			}
		
		}
		if(arg0.getSource() == button8){
			if(Test.charge == true) newWindow = new FenetreSuppr();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button9){
			if(Test.charge == true) newWindow = new FenetreVisualisation();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button10){
			this.dispose();
		}
		if(arg0.getSource() == button11){
			if(Test.charge == true) newWindow = new FenetreSupprArc();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button12){
			if(Test.charge == true) newWindow = new FenetreSupprAdmin();
			else{
				load.setForeground(Color.RED);
			}
		}
		if(arg0.getSource() == button13){
			if(Test.charge == true) newWindow = new FenetreInfoSommet();
			else{
				load.setForeground(Color.RED);
			}
		}
	}
	
	
}
